using CommandLine;

namespace NuGetBatchTool.Models
{
    [Verb("list", HelpText = "列出指定源的 NuGet 包")]
    public class ListOptions
    {
        [Option('s', "source", Required = true, HelpText = "NuGet 源名称")]
        public required string Source { get; set; }

        [Option('p', "package", Required = false, HelpText = "包名称过滤")]
        public string? PackageFilter { get; set; }
    }

    [Verb("hide", HelpText = "隐藏指定源的 NuGet 包")]
    public class HideOptions
    {
        [Option('s', "source", Required = true, HelpText = "NuGet 源名称")]
        public required string Source { get; set; }

        [Option('p', "package", Required = true, HelpText = "包名称")]
        public required string Package { get; set; }

        [Option('v', "version", Required = true, HelpText = "包版本")]
        public required string Version { get; set; }
    }

    [Verb("unhide", HelpText = "取消隐藏指定源的 NuGet 包")]
    public class UnhideOptions
    {
        [Option('s', "source", Required = true, HelpText = "NuGet 源名称")]
        public required string Source { get; set; }

        [Option('p', "package", Required = true, HelpText = "包名称")]
        public required string Package { get; set; }

        [Option('v', "version", Required = true, HelpText = "包版本")]
        public required string Version { get; set; }
    }

    [Verb("delete", HelpText = "删除指定源的 NuGet 包")]
    public class DeleteOptions
    {
        [Option('s', "source", Required = true, HelpText = "NuGet 源名称")]
        public required string Source { get; set; }

        [Option('p', "package", Required = true, HelpText = "包名称")]
        public required string Package { get; set; }

        [Option('v', "version", Required = true, HelpText = "包版本")]
        public required string Version { get; set; }
    }

    [Verb("push", HelpText = "推送 NuGet 包到指定源")]
    public class PushOptions
    {
        [Option('s', "source", Required = true, HelpText = "NuGet 源名称")]
        public required string Source { get; set; }

        [Option('f', "file", Required = true, HelpText = "包文件路径")]
        public required string PackageFile { get; set; }
    }
} 